\section{R\'{e}f\'{e}rence de la classe CDecl\-Manager}
\label{classCDeclManager}\index{CDeclManager@{CDeclManager}}
Classe reponsable de la gestion des Symbol\-Id et de la d\'{e}claration des variables.  


{\tt \#include $<$declarations.h$>$}

Graphe de collaboration de CDecl\-Manager:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=59pt]{classCDeclManager__coll__graph}
\end{center}
\end{figure}
\subsection*{Fonctions membres publiques}
\begin{CompactItemize}
\item 
{\bf Symbol\-Id} {\bf get\-Symbol\-Id} ({\bf CType} t)
\begin{CompactList}\small\item\em Retourne un Symbol\-Id utilisable pour un type donn\'{e}. \item\end{CompactList}\item 
void {\bf free\-Symbol} ({\bf CSymbol} $\ast$s)
\begin{CompactList}\small\item\em Lib\`{e}re le symbole pass\'{e} en param\`{e}tre et le d\'{e}truit. \item\end{CompactList}\item 
void {\bf free\-Symbol\-Id} ({\bf Symbol\-Id} id)
\begin{CompactList}\small\item\em Lib\`{e}re le symbole dont le Symbol\-Id est pass\'{e} en param\`{e}tre. \item\end{CompactList}\item 
void {\bf declare} ({\bf Str\-Id} strid)
\begin{CompactList}\small\item\em D\'{e}clare une variable du code source de strid donn\'{e}. \item\end{CompactList}\item 
void {\bf declare} ({\bf Str\-Id} strid, {\bf CSymbol} $\ast$value)
\begin{CompactList}\small\item\em D\'{e}clare une variable du code source avec initialisation. \item\end{CompactList}\item 
void {\bf write\-Decl} (ostream \&fdecl)
\begin{CompactList}\small\item\em \'{E}crit les d\'{e}clarations dans un flux en \'{e}criture. \item\end{CompactList}\item 
void {\bf set\-Type} ({\bf CType} t)
\begin{CompactList}\small\item\em Modifie le type \`{a} d\'{e}clarer. \item\end{CompactList}\item 
void {\bf ref\-Type} ()
\begin{CompactList}\small\item\em Ajoute un degr\'{e} de r\'{e}f\'{e}rencement au type \`{a} d\'{e}clarer. \item\end{CompactList}\item 
void {\bf deref\-Type} ()
\begin{CompactList}\small\item\em Retire un degr\'{e} de r\'{e}f\'{e}rencement au type \`{a} d\'{e}clare. \item\end{CompactList}\end{CompactItemize}
\subsection*{Fonctions membres priv\'{e}es}
\begin{CompactItemize}
\item 
{\bf Symbol\-Id} {\bf new\-Symbol\-Id} ()
\begin{CompactList}\small\item\em Fournit un nouveau Symbol\-Id. \item\end{CompactList}\item 
int {\bf find\-Symbol\-Id} ({\bf Symbol\-Id} id)
\begin{CompactList}\small\item\em Cherche un Symbol\-Id utilis\'{e}. \item\end{CompactList}\end{CompactItemize}
\subsection*{Attributs priv\'{e}s}
\begin{CompactItemize}
\item 
vector$<$ {\bf CDeclaration} $>$ {\bf declarations}
\begin{CompactList}\small\item\em Table des d\'{e}clarations d\'{e}j\`{a} effectu\'{e}es. \item\end{CompactList}\item 
{\bf CType} {\bf decl\-Type}
\begin{CompactList}\small\item\em Type pour lequel on est en train de d\'{e}clarer des variables. \item\end{CompactList}\end{CompactItemize}
\subsection*{Classes}
\begin{CompactItemize}
\item 
class {\bf CDeclaration}
\begin{CompactList}\small\item\em Classe d\'{e}crivant une d\'{e}claration manipul\'{e}e par {\bf CDecl\-Manager}{\rm (p.\,\pageref{classCDeclManager})}. \item\end{CompactList}\end{CompactItemize}


\subsection{Description d\'{e}taill\'{e}e}
Classe reponsable de la gestion des Symbol\-Id et de la d\'{e}claration des variables. 

Elle sert notamment d'interface avec la pile des symboles pour la d\'{e}claration des variables du code source. 



D\'{e}finition \`{a} la ligne 25 du fichier declarations.h.

\subsection{Documentation des fonctions membres}
\index{CDeclManager@{CDecl\-Manager}!declare@{declare}}
\index{declare@{declare}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CDecl\-Manager::declare ({\bf Str\-Id} {\em strid}, {\bf CSymbol} $\ast$ {\em value})}\label{classCDeclManager_7f694db0578f8400a3479ff9366f39ea}


D\'{e}clare une variable du code source avec initialisation. 

Avant de proc\'{e}der, v\'{e}rifie que la d\'{e}claration est valide. \begin{Desc}
\item[Param\`{e}tres:]
\begin{description}
\item[{\em strid}]strid de la variable \`{a} d\'{e}clarer \item[{\em value}]symbole donnant la valeur d'initialisation \end{description}
\end{Desc}


D\'{e}finition \`{a} la ligne 129 du fichier declarations.cpp.

R\'{e}f\'{e}rences ERR\_\-REDECLARE, error\-Warning(), CSymbol\-Stack::get\-Symbol\-From\-Str\-Id\-In\-Context(), et symbol\-Stack.

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=209pt]{classCDeclManager_7f694db0578f8400a3479ff9366f39ea_cgraph}
\end{center}
\end{figure}
\index{CDeclManager@{CDecl\-Manager}!declare@{declare}}
\index{declare@{declare}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CDecl\-Manager::declare ({\bf Str\-Id} {\em strid})}\label{classCDeclManager_be9249e53df36c1e5448f3280be44a27}


D\'{e}clare une variable du code source de strid donn\'{e}. 



D\'{e}finition \`{a} la ligne 110 du fichier declarations.cpp.

R\'{e}f\'{e}rences ERR\_\-REDECLARE, error\-Warning(), CSymbol\-Stack::get\-Symbol\-From\-Str\-Id\-In\-Context(), et symbol\-Stack.

R\'{e}f\'{e}renc\'{e} par yyparse().

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=209pt]{classCDeclManager_be9249e53df36c1e5448f3280be44a27_cgraph}
\end{center}
\end{figure}
\index{CDeclManager@{CDecl\-Manager}!derefType@{derefType}}
\index{derefType@{derefType}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CDecl\-Manager::deref\-Type ()}\label{classCDeclManager_6a20563dd8ea07f4365a9d93ad56360d}


Retire un degr\'{e} de r\'{e}f\'{e}rencement au type \`{a} d\'{e}clare. 



D\'{e}finition \`{a} la ligne 180 du fichier declarations.cpp.

R\'{e}f\'{e}rences decl\-Type, et CType::deref().

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=140pt]{classCDeclManager_6a20563dd8ea07f4365a9d93ad56360d_cgraph}
\end{center}
\end{figure}
\index{CDeclManager@{CDecl\-Manager}!findSymbolId@{findSymbolId}}
\index{findSymbolId@{findSymbolId}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int CDecl\-Manager::find\-Symbol\-Id ({\bf Symbol\-Id} {\em id})\hspace{0.3cm}{\tt  [private]}}\label{classCDeclManager_a6c6f91e2569fa4f5b3c352bce47e6d9}


Cherche un Symbol\-Id utilis\'{e}. 

\begin{Desc}
\item[Renvoie:]Position du symbole dans la table. 

-1 si le Symbol\-Id n'est pas trouv\'{e}. \end{Desc}
\begin{Desc}
\item[Note:]L'impl\'{e}mentation actuelle assure que la position est \'{e}gale au Symbol\-Id. Pour des raisons de modularit\'{e}, cette particularit\'{e} n'est pas utilis\'{e}e. \end{Desc}


D\'{e}finition \`{a} la ligne 30 du fichier declarations.cpp.

R\'{e}f\'{e}rences declarations.

R\'{e}f\'{e}renc\'{e} par free\-Symbol(), et free\-Symbol\-Id().\index{CDeclManager@{CDecl\-Manager}!freeSymbol@{freeSymbol}}
\index{freeSymbol@{freeSymbol}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CDecl\-Manager::free\-Symbol ({\bf CSymbol} $\ast$ {\em s})}\label{classCDeclManager_86344062e3161d081da0ae920e99d9e1}


Lib\`{e}re le symbole pass\'{e} en param\`{e}tre et le d\'{e}truit. 

La lib\'{e}ration de m\'{e}moire est faite dans tous les cas, mais la lib\'{e}ration du Symbol\-Id n'est faite que si le symbole n'est pas associ\'{e} \`{a} une variable d\'{e}clar\'{e}e dans le code source. Un Symbol\-Id lib\'{e}r\'{e} est \char`\"{}remis en circulation\char`\"{}. \begin{Desc}
\item[Note:]Cette fonction doit \^{e}tre appel\'{e}e par les fonctions de traitement pour une bonne gestion de la m\'{e}moire et des d\'{e}clarations. \end{Desc}


D\'{e}finition \`{a} la ligne 68 du fichier declarations.cpp.

R\'{e}f\'{e}rences declarations, find\-Symbol\-Id(), CSymbol::get\-Id(), CSymbol::get\-Str\-Id(), et STRID\_\-NULL.

R\'{e}f\'{e}renc\'{e} par process\-Add(), process\-Aff(), process\-Deref(), process\-Div(), process\-Eql(), process\-Grt(), process\-Low(), process\-Mul(), process\-Neq(), process\-Not(), process\-Op1And(), process\-Op1Or(), process\-Op2And(), process\-Op2Or(), process\-Ref(), process\-Ref\-Aff(), et process\-Sub().

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=180pt]{classCDeclManager_86344062e3161d081da0ae920e99d9e1_cgraph}
\end{center}
\end{figure}
\index{CDeclManager@{CDecl\-Manager}!freeSymbolId@{freeSymbolId}}
\index{freeSymbolId@{freeSymbolId}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CDecl\-Manager::free\-Symbol\-Id ({\bf Symbol\-Id} {\em id})}\label{classCDeclManager_6b87abe63a5c52579ae14f465a442c62}


Lib\`{e}re le symbole dont le Symbol\-Id est pass\'{e} en param\`{e}tre. 

Le Symbol\-Id est alors \char`\"{}remis en circulation\char`\"{}. \begin{Desc}
\item[Note:]Cette fonction doit \^{e}tre appel\'{e}e par les fonctions de traitement pour une bonne gestion des d\'{e}clarations. \end{Desc}


D\'{e}finition \`{a} la ligne 94 du fichier declarations.cpp.

R\'{e}f\'{e}rences declarations, et find\-Symbol\-Id().

R\'{e}f\'{e}renc\'{e} par CSymbol\-Stack::restore\-Context().

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=184pt]{classCDeclManager_6b87abe63a5c52579ae14f465a442c62_cgraph}
\end{center}
\end{figure}
\index{CDeclManager@{CDecl\-Manager}!getSymbolId@{getSymbolId}}
\index{getSymbolId@{getSymbolId}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf Symbol\-Id} CDecl\-Manager::get\-Symbol\-Id ({\bf CType} {\em t})}\label{classCDeclManager_1cd3eb4d713a074a0ca6fdbf5b241b53}


Retourne un Symbol\-Id utilisable pour un type donn\'{e}. 



D\'{e}finition \`{a} la ligne 46 du fichier declarations.cpp.

R\'{e}f\'{e}rences declarations, et new\-Symbol\-Id().

R\'{e}f\'{e}renc\'{e} par CSymbol::CSymbol().

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=184pt]{classCDeclManager_1cd3eb4d713a074a0ca6fdbf5b241b53_cgraph}
\end{center}
\end{figure}
\index{CDeclManager@{CDecl\-Manager}!newSymbolId@{newSymbolId}}
\index{newSymbolId@{newSymbolId}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf Symbol\-Id} CDecl\-Manager::new\-Symbol\-Id ()\hspace{0.3cm}{\tt  [private]}}\label{classCDeclManager_a25fd3d96616ab7f871a5a28a4780c20}


Fournit un nouveau Symbol\-Id. 



D\'{e}finition \`{a} la ligne 23 du fichier declarations.cpp.

R\'{e}f\'{e}renc\'{e} par get\-Symbol\-Id().\index{CDeclManager@{CDecl\-Manager}!refType@{refType}}
\index{refType@{refType}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CDecl\-Manager::ref\-Type ()}\label{classCDeclManager_13fe4fbd3b64d5884008f48e81354709}


Ajoute un degr\'{e} de r\'{e}f\'{e}rencement au type \`{a} d\'{e}clarer. 



D\'{e}finition \`{a} la ligne 175 du fichier declarations.cpp.

R\'{e}f\'{e}rences decl\-Type, et CType::ref().

R\'{e}f\'{e}renc\'{e} par yyparse().

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=130pt]{classCDeclManager_13fe4fbd3b64d5884008f48e81354709_cgraph}
\end{center}
\end{figure}
\index{CDeclManager@{CDecl\-Manager}!setType@{setType}}
\index{setType@{setType}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CDecl\-Manager::set\-Type ({\bf CType} {\em t})}\label{classCDeclManager_615464b0a61fbf3a007c226e5e3001bf}


Modifie le type \`{a} d\'{e}clarer. 



D\'{e}finition \`{a} la ligne 170 du fichier declarations.cpp.

R\'{e}f\'{e}rences decl\-Type.

R\'{e}f\'{e}renc\'{e} par yyparse().\index{CDeclManager@{CDecl\-Manager}!writeDecl@{writeDecl}}
\index{writeDecl@{writeDecl}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CDecl\-Manager::write\-Decl (ostream \& {\em fdecl})}\label{classCDeclManager_260f185d9015baabff7c33b5045f5099}


\'{E}crit les d\'{e}clarations dans un flux en \'{e}criture. 

\begin{Desc}
\item[Note:]Les flux cout et cerr permettent d'\'{e}crire sur la sortie standard et la sortie d'erreur standard. \end{Desc}


D\'{e}finition \`{a} la ligne 160 du fichier declarations.cpp.

R\'{e}f\'{e}rences declarations.

R\'{e}f\'{e}renc\'{e} par main().

\subsection{Documentation des donn\'{e}es membres}
\index{CDeclManager@{CDecl\-Manager}!declarations@{declarations}}
\index{declarations@{declarations}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}vector$<${\bf CDeclaration}$>$ {\bf CDecl\-Manager::declarations}\hspace{0.3cm}{\tt  [private]}}\label{classCDeclManager_c85f75708322917c0ab7c67e0716d985}


Table des d\'{e}clarations d\'{e}j\`{a} effectu\'{e}es. 



D\'{e}finition \`{a} la ligne 50 du fichier declarations.h.

R\'{e}f\'{e}renc\'{e} par find\-Symbol\-Id(), free\-Symbol(), free\-Symbol\-Id(), get\-Symbol\-Id(), et write\-Decl().\index{CDeclManager@{CDecl\-Manager}!declType@{declType}}
\index{declType@{declType}!CDeclManager@{CDecl\-Manager}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf CType} {\bf CDecl\-Manager::decl\-Type}\hspace{0.3cm}{\tt  [private]}}\label{classCDeclManager_da770467cc6413f2f682fa7e24e90dfc}


Type pour lequel on est en train de d\'{e}clarer des variables. 



D\'{e}finition \`{a} la ligne 53 du fichier declarations.h.

R\'{e}f\'{e}renc\'{e} par deref\-Type(), ref\-Type(), et set\-Type().

La documentation de cette classe a \'{e}t\'{e} g\'{e}n\'{e}r\'{e}e \`{a} partir des fichiers suivants:\begin{CompactItemize}
\item 
{\bf declarations.h}\item 
{\bf declarations.cpp}\end{CompactItemize}
